Skip to content

feat: Decouple Meticulous shot import from the chosen profile - #1159

Merged
graphefruit merged 1 commit into
graphefruit:developfrom
nalundgaard:feature/decouple-meticulous-shot-import-from-profile
Jul 27, 2026
Merged

feat: Decouple Meticulous shot import from the chosen profile#1159
graphefruit merged 1 commit into
graphefruit:developfrom
nalundgaard:feature/decouple-meticulous-shot-import-from-profile

Conversation

@nalundgaard

@nalundgaard nalundgaard commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #1130 / #1141, addressing the profile-scoped shot history noted there and discussed on Discord ("I think seeing all would be the better solution in the end").

Shot import no longer filters by the chosen profile

Observed: Choosing a profile first caused "Import a shot" to only offer shots pulled with that profile. Nothing in the UI presents the profile select as a filter, so shots that exist on the machine simply appear to be missing.

Cause: The profile select underneath the "Meticulous Machine" section exists to set the profile to use live in the "While Brewing" section. Its value was additionally being resolved to a profile name and passed to the import modal as profileFilter, which fed the history search query.

76629e0 already removed the filter from the paging call, but the initial load still passed it. That left the two inconsistent: the first page was profile-scoped while every page loaded on scroll was not, so the list would start narrow and then widen as you scrolled.

Fix: The import modal no longer receives a profile filter at all, so both the initial load and paging list every recent shot. The now-unused profileFilter parameter is removed from MeticulousDevice.getHistory() so the coupling cannot be reintroduced by accident. Choosing a profile still does exactly what it did before for the brew itself — it is simply no longer entangled with import.

Reordered the section to show the two are independent

With the filtering gone, the ordering was still implying a sequence: pick a profile, then import within it. "Import a shot" now comes first, followed by a compact or divider, then "Choose profile".

  Meticulous Machine

  ⬇  Import a shot

  ─────────── or ───────────

  Choose profile
  [ No Profile            ▾ ]

Screenshot

image

The divider replaces the previous full-width <hr/> and is styled with rules on both sides of a muted 12px label. It is deliberately not uppercased: every other text-transform in the app cancels uppercase rather than adding it (ion-button is set to inherit specifically to undo Ionic's Material-mode all-caps), and CSS uppercasing applies blindly to translated strings, which is locale-sensitive. The new OR key is added to en.json only, matching how new strings are handled elsewhere.

Files changed

  • brew-brewing-preparation-device.component.ts — stop resolving and passing profileFilter to the import modal
  • brew-modal-import-shot-meticulous.component.ts — drop the profileFilter input; initial load now matches paging
  • meticulousDevice.ts — remove the unused profileFilter parameter from getHistory()
  • brew-brewing-preparation-device.component.{html,scss} — reorder the two actions, add the or divider
  • en.json — new OR key

Verified with tsc --noEmit and ng build (no new errors or warnings on the touched files); lint and prettier report no new issues.

🤖 Generated with Claude Code

Follow-up to graphefruit#1130 / graphefruit#1141. The profile select in the "Meticulous
Machine" section sets the profile to use live while brewing, but it also
silently filtered the shot history offered by "Import a shot". That
reads as a filter, which it never looked like in the UI, so the import
now always lists every recent shot.

76629e0 already removed the filter from the paging call, but the
initial load still passed it, so the first page was profile-scoped while
every following page was not. Both now load the full history, and the
unused filter parameter is gone from MeticulousDevice.getHistory().

Also reorder the section so "Import a shot" comes first and "Choose
profile" second, separated by a compact "or" divider, to make clear that
the two are independent rather than one feeding the other.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@nalundgaard nalundgaard changed the title Decouple Meticulous shot import from the chosen profile feat: Decouple Meticulous shot import from the chosen profile Jul 25, 2026
@graphefruit
graphefruit merged commit 425bd3b into graphefruit:develop Jul 27, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants